iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
Modern Web

前端開發維護筆記 - 打造健康的前端專案系列 第 6

好用的 CI 工具 - GitHub Actions 快速入門

  • 分享至 

  • xImage
  •  

CI 的工具有很多,常見的可能有 Jenkins、GitLab CI、GitHub Actions 等等,不同的工具當然有各自的優缺點,但在運作與設定上也有許多共同之處。

雖然這些工具我或多或少都有接觸過,但我處理比較多的是 GitHub Actions,所以這篇就以 GitHub Actions 為主來進行介紹。

解鎖 GitHub Actions

想要解鎖 GitHub Actions 其實很簡單,只要你的專案存放在 GitHub 上就行了,Public 專案的話可以免費使用,如果是 Private 就會有相對應的收費囉 付費解鎖

而只要你在專案的 .github/workflows/ 這個目錄下撰寫你的 CI 腳本,當每次觸發腳本的運行條件時,GitHub 就會自動執行腳本。

而這些腳本必須使用 YAML 文件來撰寫,如果對 YAML 不了解的話可以先看看 YAML - 維基百科,自由的百科全書 ,有個基本認知之後再回來繼續。

GitHub Actions 的 Workflow 設定檔解析

放在 .github/workflows/ 目錄下的腳本其實並沒有限制數量,你可以將許多不同的工作寫成不同的腳本來設定,下面我用一個執行 E2E 測試的腳本當作範例,快速說明一下設定檔的架構:

# 設定這個 workflows 顯示的名稱,會在 repo 的 Actions 頁籤看到
name: E2E Tests

# 這個 workflows 的觸發時機
on:
  # 設定可以透過 GitHub Webhook 使用 e2e_test 這個事件來觸發 workflows
  repository_dispatch:
    types: [e2e_test]
  # 設定排程每天晚上 12:00 執行
  schedule:
    - cron: '0 0 * * *'  # every day at midnight at UTC+8

# 實際運行的工作腳本
jobs:
  # Jobs 下可以設置多個工作,會直接使用 jobs 內的物件名稱來作為 job id
  # 這邊的範例只有設置 test,但其實可以設置多個,也可以自行命名
  test:
    # 基於什麼環境來運作腳本,可以在下面的連結找到由 GitHub 提供的 runner 環境
    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on
    runs-on: ubuntu-latest
    # job 的具體步驟
    steps:
    - uses: actions/checkout@v3
      with:
        token: ${{ secrets.PAT_TOKEN }}
        submodules: 'recursive'
    - uses: actions/setup-node@v3
      with:
        node-version: '16.x'
        cache: 'yarn'
    - name: Install dependencies
      run: yarn install
    - name: Install Playwright
      run: npx playwright install
    - name: Ensure Playwright dependencies are installed
      run: sudo npx playwright install-deps
    - name: Run Playwright tests
      run: npx playwright test
      env:
        PLAYWRIGHT_USERNAME: ${{ secrets.PLAYWRIGHT_USERNAME }}
        PLAYWRIGHT_PASSWORD: ${{ secrets.PLAYWRIGHT_PASSWORD }}
        PLAYWRIGHT_EMAIL_CREDENTIALS: ${{ secrets.PLAYWRIGHT_EMAIL_CREDENTIALS }}
        PLAYWRIGHT_EMAIL_TOKEN: ${{ secrets.PLAYWRIGHT_EMAIL_TOKEN }}
        PLAYWRIGHT_INTERNAL_TOKEN: ${{ secrets.PLAYWRIGHT_INTERNAL_TOKEN }}
        PLAYWRIGHT_DOMAIN: https://storipress.dev
        PLAYWRIGHT_API_HOST: https://api.storipress.dev

GitHub Marketplace

GitHub Marketplace 是一個讓開發者把自己寫的 GitHub 工具上架給其他人使用的地方,其中 Apps 分類包含了各種第三方服務的整合工具, Actions 分類就是可以讓你直接在 GitHub Actions 中使用的工具。

而且因為 GitHub 目前是 Open source 的重鎮,所以許多常用的工具其實都有 GitHub Actions 的版本並上架到 GitHub Marketplace 方便我們直接使用。

像是官方的 Action: actions/setup-node@v3 就是個一個使用率極高的 Actions,在撰寫 job steps 的時候,只像這樣加入就可以在你的 CI 環境中設置好 Node.js 16 版,而且連 yarn 的快取也幫忙設定好了。

- uses: actions/setup-node@v3
  with:
    node-version: 16
    cache: 'yarn'

今天的內容比較偏向是 GitHub Actions 的基礎使用說明,目的是在讓你比較輕鬆的理解方向概念,不過隨著情境的不同,可能會需要使用到這篇沒有提到的設定選項時,更深入詳細的說明還是要去看官方文件喔。

明天就來分享一下我在設置 GitHub Actions 時曾經踩過的坑,跟一些實用的小技巧吧。


上一篇
CI/CD 的基礎 - DevOps
下一篇
GitHub Actions Workflow 設定基礎技巧
系列文
前端開發維護筆記 - 打造健康的前端專案27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言